//
//  LH_CLLocationManager.h
//  location
//
//  Created by 美食家 on 16/8/2.
//  Copyright © 2016年 不孤独的美食家. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

/**
 *  保存当前用户定位到的经纬度代码块
 */
typedef void (^LocationCorrrdinateBlock)(CLLocationCoordinate2D locationCorrrdinate);
/**
 *  保存定位失败的代码块
 */
typedef void (^LocationErrorBlock) (NSString *error);
/**
 *  获取到用户已定位的详细位置，格式是省份加城市名加街道名加街道详细地址
 */
typedef void(^NSStringDetailAddressBlock)(NSString *detailAddressString);
/**
 *  获取已定位到用户当前所在国家
 */
typedef void(^NSStringCountryBlock)(NSString *countryString);
/**
 *  获取已定位到用户的当前位置的行政区域，格式是省份，比如广东省
 */
typedef void(^NSStringProvinceBlock)(NSString *provinceString);
/**
 *  获取已定位到用户的当前位置，格式是比如深圳市
 */
typedef void(^NSStringCityBlock)(NSString *cityString);
/**
 *  获取已定位到用户的当前位置的所在地的街道名
 */
typedef void(^NSStringThoroughfareBlock)(NSString *thoroughfareString);
/**
 *  获取已定位到用户的当前位置的所在地的邮政编码
 */
typedef void(^NSStringPostalCodeBlock)(NSString *postalCodeString);


@interface LH_CLLocationManager : NSObject<CLLocationManagerDelegate>
/**
 *  定位管理者对象
 *
 *  @return 创建好的定位管理者对象
 */
+ (LH_CLLocationManager *)shareLocation;
/**
 *  用于获取用户当前位置的block
 *
 *  @param locaiontBlock 返回的用户当前位置的Corrrdinate
 */
- (void) lh_getCurrentLocationCoordinate:(LocationCorrrdinateBlock) locationtBlock;
/**
 *  获取定位到的城市的经纬度和详细地址
 *
 *  @param locaiontBlock 返回定位代码块
 *  @param addressBlock  返回详细地址代码块
 */
- (void) lh_getCurrentLocationCoordinate:(LocationCorrrdinateBlock) locationtBlock  withAddress:(NSStringDetailAddressBlock) addressBlock;
/**
 *  获取详细地址
 *
 *  @param addressBlock addressBlock description
 */
- (void)lh_getCurrentDetailAddress:(NSStringDetailAddressBlock)addressBlock;
/**
 *  获取当前定位到所在国家
 *
 *  @param countryBlock 返回定位到所在国家代码块
 */
- (void)lh_getCurrentCountry:(NSStringCountryBlock)countryBlock;
/**
 *  获取城市的省份
 *
 *  @param cityBlock 返回所在省份的block
 */
- (void)lh_getCurrentProvince:(NSStringProvinceBlock)provinceBlock;
/**
 *  获取所在城市
 *
 *  @param cityBlock 返回所在城市的block
 */
-(void)lh_getCurrentCity:(NSStringCityBlock)cityBlock;
/**
 *  获取所在城市的街道名
 *
 *  @param thoroughfareBlock 返回所在街道的block
 */
-(void)lh_getCurrentThoroughfare:(NSStringThoroughfareBlock)thoroughfareBlock;
/**
 *  获取邮编
 *
 *  @param postalCode 邮编block
 */
-(void)lh_getCurrentPostalCode:(NSStringPostalCodeBlock)postalCode;

/**
 *  定位失败回调的block
 *
 *  @param errorBlock errorBlock 错误代码块
 */
- (void)lh_getLocationError:(LocationErrorBlock) errorBlock;
@end

